package com.g3d.objects;

import com.g3d.types.G3DVector3;

public class G3DCamera 
{

	public enum G3DENUM_CAMERA_TYPE
	{
		CAMERA_PERSPECTIVE,
		CAMERA_ORTHO
	}
	
	private G3DVector3 _position = new G3DVector3(0.0f, 0.0f, 1.0f);
	private G3DVector3 _direction = new G3DVector3(0.0f, 0.0f, -1.0f);
	private G3DVector3 _eyeUp = new G3DVector3(0.0f, 1.0f, 0.0f);
	private float _zNear = 1.0f;
	private float _zFar = 1000.0f;;
	private float _aspect = 0;
	private float _fov;
	private G3DENUM_CAMERA_TYPE _type = G3DENUM_CAMERA_TYPE.CAMERA_PERSPECTIVE;
	
	public G3DCamera()
	{
		
	}
	
	public G3DVector3 getPosition()
	{
		return this._position.clone();
	}
	public void setPosition(G3DVector3 position)
	{
		this._position = position.clone();
	}
	
	public G3DVector3 getDirection()
	{
		return this._direction.clone();
	}
	public void setDirection(G3DVector3 direction)
	{
		this._direction = direction.clone();
	}
	
	public G3DVector3 getEyeUp()
	{
		return this._eyeUp.clone();
	}
	public void setEyeUp(G3DVector3 eyeUp)
	{
		this._eyeUp = eyeUp.clone();
	}
	
	public float getAspectRatio()
	{
		return this._aspect;
	}
	public void setAspectRation(float value)
	{
		this._aspect = value;
	}
	
	public float getFOV()
	{
		return this._fov;
	}
	public void setFOV(float value)
	{
		this._fov = value;
	}
	
	public float getZNear()
	{
		return this._zNear;
	}
	public float getZFar()
	{
		return this._zFar;
	}

	public void setZNear(float value)
	{
		this._zNear = value;
	}
	public void setZFar(float value)
	{
		this._zFar = value;
	}
	public G3DENUM_CAMERA_TYPE getType()
	{
		return this._type;
	}
	public void setType(G3DENUM_CAMERA_TYPE type)
	{
		this._type = type;
	}
}
